﻿//
// Global.cs: Globals for the LastFMPhotoCrawler project.
//
// Copyright 2010 Michael Goethe
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
//

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Windows.Forms;
using System.Reflection;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using S9PalCommon;
using S9PalCommon.ArtistLibrary;
using log4net;

namespace LastFMPhotoCrawler
{
    /// <summary>
    /// Globals for the LastFMPhotoCrawler project.
    /// </summary>
    public sealed class Global
    {
        private static LastFMPhotoCrawlerSettings settings;
        public static readonly ILog logger = LogManager.GetLogger(typeof(Global));

        static Global() { }
        Global() { }

        /// <summary>
        /// Settings for the LastFMPhotoCrawler project.
        /// </summary>
        public static LastFMPhotoCrawlerSettings Settings
        {
            get
            {
                if (settings == null)
                {
                    settings = new LastFMPhotoCrawlerSettings();
                    if (File.Exists(S9PalCommon.Global.SettingsDirectoryPath + settings.FileName))
                    {
                        settings = S9PalCommon.Helper.DeserializeObject<LastFMPhotoCrawlerSettings>(S9PalCommon.Global.SettingsDirectoryPath + settings.FileName);
                    }
                }
                return settings;
            }
            set
            {
                settings = value;
            }
        }
    }
}
